/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.cpqd.ssar.utilitarias;

import java.util.List;
import java.util.Vector;

/**
 *
 * @author igorj
 * Classe que representa cada geometria construida pelo modelador basico
 * sendo que cada geometria � composta por um ou mais objetos Geometry
 */
public class ListaGeometrias {

    private int id;
    private String name;
    private List geo = new Vector();
    private boolean visible;
    private boolean solid;
    private Material material;
    private float visibilidade = 1.0f;

    public ListaGeometrias() {

    }

    /**
     * 
     * @param geo
     * @param id
     */
    public ListaGeometrias(List geo, int id) {

        setId(id);
        setName("Elemento[" + id + "]");
        setVisible(true);
        setSolid(true);
        setGeo(geo);
    }
    
    /**
     * 
     * @param id
     * @param name
     * @param visible
     * @param solid
     */
    public ListaGeometrias(int id, String name, boolean visible, boolean solid) {
        setId(id);
        setName(name);
        setVisible(visible);     
        setSolid(solid);
    }

    /**
     * 
     * @param geo
     * @param id
     * @param name
     * @param visible
     * @param solid
     */
    public ListaGeometrias(List geo, int id, String name, boolean visible, boolean solid) {
        setId(id);
        setName(name);
        setVisible(visible);     
        setSolid(solid);
        setGeo(geo);
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }
    
    public void setVisibilidade(float valor){
        visibilidade = valor;
    }
    
    public float getVisibilidade(){
        return visibilidade;
    }

    @Override
    public String toString() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List getGeo() {
        return geo;
    }

    public void setGeo(List geo) {
        this.geo = geo;
    }

    public boolean isVisible() {
        return visible;
    }
    
     public boolean isSolid() {
        return solid;
    }

    public void setVisible(boolean visible) {
        this.visible = visible;

    }
    
     public void setSolid(boolean solid) {
        this.solid = solid;

    }

    public void addGeometry(Geometria g) {
        geo.add(g);
       
    }

    /**
     * Metodo que pega o valor do parâmetro 'visible' da ListaGeometrias 
     * selecionada e aplica a todos os objetos Geometrias nele contidas      
     * @param visible
     */
    public void setGroupVisible(boolean visible) {
        this.visible = visible;
        if (!this.geo.isEmpty()) {
            for (int i = 0; i < this.geo.size(); i++) {

                Geometria g = (Geometria) this.geo.get(i);
                g.setVisible(visible);
            }
        }
    }
    
    /**
     * Metodo que pega o valor do parâmetro 'solid' da ListaGeometrias 
     * selecionada e aplica a todos os objetos Geometrias nele contidas      
     * @param solid
     */
    public void setGroupSolid(boolean solid) {
        this.solid = solid;
        if (!this.geo.isEmpty()) {
            for (int i = 0; i < this.geo.size(); i++) {

                Geometria g = (Geometria) this.geo.get(i);
                g.setSolid(solid);
            }
        }
    }

    /**
     * 
     * @return Material material
     */
    public Material getMaterial() {
        return material;
    }

    /**
     * 
     * @param material
     */
    public void setMaterial(Material material) {
        this.material = material;
    }
    
    /**
     * Metodo que pega o valor do parâmetro 'material' da ListaGeometrias 
     * selecionada e aplica a todos os objetos Geometrias nele contidas   
     * @param material
     */
    public void setMaterialGrupo(Material material){
        this.material = material;
        if (!this.geo.isEmpty()) {
            for (int i = 0; i < this.geo.size(); i++) {

                Geometria g = (Geometria) this.geo.get(i);
                g.setMaterial(material);
            }
        }
        
        
    }
}
    

